#!/bin/bash

# 慎用`rm -rf`命令，以`mv`替代：
# 在 ~ 下 .bashrc 或 .bash_profile 添加替代命令

# 函数内 mv 替代 rm 时，${!#} 取最后个参数，而非 $@ 所有参数。
# 以免 mv 使用了 rm 的选项而出错。

[[ -n `cat $HOME/.bashrc | grep "trash_dir"` ]] || \
echo "
# Replace rm with mv

trash_dir=\$HOME/.Trash
mkdir -p \$trash_dir

alias rm=trash
alias re=restore
alias rc=cleartrash
alias rl=\"ls -l \$trash_dir\"

trash() {
    # mv \${!#} \$trash_dir
    src=\${!#}
    src_name=\$(basename \$src)
    src_dir=\$(dirname \$src)
    dest_name=\$src_name; i=0
    while [[ -e \"\$trash_dir/\$dest_name\" ]]; do
        dest_name=\"\$src_name\$((++i))\"
    done
    mv \"\$src_dir/\$src_name\" \"\$trash_dir/\$dest_name\"
}
restore() {
    mv -i \$trash_dir/\${!#} ./
}
cleartrash() {
    read -p \"clear trash? [y/N] \" confirm
    [[ \$confirm =~ [yY](es)* ]] && `which rm` -rf \$trash_dir/*
}" >> $HOME/.bashrc

cat $HOME/.bashrc

# 终端不关闭时生效，需要执行（脚本内执行无效）：
# source ~/.bashrc
